package cn.patient.pp.module.patients.service;

import javax.validation.*;

import cn.patient.pp.module.patients.controller.admin.vo.importExecl.ImportRespVO;
import cn.patient.pp.module.patients.controller.admin.vo.importExecl.PatientsDOExeclVO;
import cn.patient.pp.module.patients.controller.admin.vo.PatientsDOPageReqVO;
import cn.patient.pp.module.patients.controller.admin.vo.PatientsDOSaveReqVO;
import cn.patient.pp.module.patients.dal.dataobject.patients.PatientsDODO;
import cn.patient.pp.framework.common.pojo.PageResult;

import java.util.List;

/**
 * 患者总 Service 接口
 *
 * @author sailv
 */
public interface PatientsDOService {

    /**
     * 创建患者总
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Integer createDO(@Valid PatientsDOSaveReqVO createReqVO);

    /**
     * 更新患者总
     *
     * @param updateReqVO 更新信息
     */
    void updateDO(@Valid PatientsDOSaveReqVO updateReqVO);

    /**
     * 删除患者总
     *
     * @param id 编号
     */
    void deleteDO(Integer id);
    /**
     * 根据条件删除患者
     *
     * @param updateReqVO 更新信息
     */
    Integer deleteDOByCounty(PatientsDODO updateReqVO);

    /**
     * 获得患者总
     *
     * @param id 编号
     * @return 患者总
     */
    PatientsDODO getDO(Integer id);

    /**
     * 获得患者总分页
     *
     * @param pageReqVO 分页查询
     * @return 患者总分页
     */
    PageResult<PatientsDODO> getDOPage(PatientsDOPageReqVO pageReqVO, Long userId);

    ImportRespVO importBaseInfoList(List<PatientsDOExeclVO> list, Boolean updateSupport) throws InterruptedException;

    PatientsDODO getByPatientCode(String patientCode);

    PatientsDODO getByReportPatientInfoId(Long id);

}